/*
 * InputCliente.cpp
 *
 *  Created on: 12/10/2012
 *      Author: leandro
 */

#include "InputCliente.h"
#include <iostream>

InputCliente::InputCliente() {
	
	mensaje = "";
	ultimoMensaje = "";
	pthread_mutex_init(&mutexInput, NULL);
}

void InputCliente::AgregarEvento(SDL_Event evento) {
	
	pthread_mutex_lock(&mutexInput);
	input.push(evento);
	pthread_mutex_unlock(&mutexInput);
}

void InputCliente::manejarInput() {
	
	SDLKey teclasPosibles[] = {SDLK_RIGHT, SDLK_LEFT, SDLK_UP, SDLK_DOWN, SDLK_SPACE};
	unsigned int size = 5;
	
	pthread_mutex_lock(&mutexInput);
	queue<SDL_Event> inputAManejar(input);
	while (!input.empty()) input.pop();
	pthread_mutex_unlock(&mutexInput);
	
	SDL_Event evento;

	while (!inputAManejar.empty()) {
		
		evento = inputAManejar.front();
		inputAManejar.pop();

		if (evento.type == SDL_KEYDOWN) {
			
			for (unsigned int i=0; i<size; i++)
				if (evento.key.keysym.sym == teclasPosibles[i]) {
					mensaje += Logger::intToString(teclasPosibles[i]) + ";" + Logger::intToString(Presiono) + "#";
				}

        }
        
        if (evento.type == SDL_KEYUP) {

			for (unsigned int i=0; i<size; i++)
				if (evento.key.keysym.sym == teclasPosibles[i])
					mensaje += Logger::intToString(teclasPosibles[i]) + ";" + Logger::intToString(Libero) + "#";
		}
	}
}

string InputCliente::getMensaje() {
	
	return mensaje;
}

void InputCliente::limpiarBuffer() {
	
	ultimoMensaje = mensaje;
	mensaje = "";
}
